home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Network Support Library
/
RoseWare - Network Support Library.iso
/
btrieve
/
btr510.exe
/
BUGS.510
< prev
next >
Wrap
Text File
|
1994-02-18
|
57KB
|
1,290 lines
==========================================================================
PART I
------
Below is a listing of the patch files and their corresponding source files.
When a patch is applied (left hand column), it changes the source
file (right hand column):
Patch File: Files: Size Last Modified
-------------- -------------- ------------- ---------------
BPATOS2 510 ---------> BTRCALLS DLL 40,674 9-14-90 9:05a
BPATREQO 510 ---------> BTRCALLS DLL 24,778 12-12-89 11:15a
WTOOLPAT 510 ---------> BTRTOOLS EXE 116,528 8-28-90 11:03a
BPATWIN 510 ---------> WBTRCALL DLL 51,392 8-28-90 10:24a
BPATREQ 510 ---------> BREQUEST EXE 17,874 3-22-90 3:46p
BPATDOS 51A ---------> BTRIEVE EXE 42,524 7-12-90 5:21p
BPATUT 510 ---------> BUTIL EXE 44,912 12-11-89 4:03p
BPATRTR 510 ---------> BROUTER VAP 13,054 12-11-89 2:28p
BPATVAP 510 ---------> BSERVER VAP 132,015 12-11-89 3:08p
BPATNLM 510 ---------> BTRIEVE NLM 56,524 3-22-90 3:56p
==========================================================================
PART II
-------
OPTIONAL PATCHES
Optional patches are applied by removing the (;) from the beginning of the
patch line. Instructions for implementing the optional patches are in
the patch files.
Below is a listing of the optional patches and their corresponding patch files.
The descriptions for the patches can be found in PART III of this document.
Patch # Patch File:
-------- --------------
# 7 -----> BPATVAP 510
# 20 -----> BPATDOS 51A
# 77 -----> BPATDOS 51A
# 98 -----> BPATDOS 51A
# 118 -----> BPATDOS 51A
# 122 -----> BPATDOS 51A
# 132 -----> BPATOS2 510
# 132 -----> BPATWIN 510
# 136 -----> BPATWIN 510
# 136 -----> BPATOS2 510
# 175 -----> BPATDOS 51A
==========================================================================
PART III
--------
Below is a listing of the patched products. In parenthesis () is the
environment for which the patch was created.
Bug descriptions for :
BTRIEVE (DOS, OS/2, Windows, & NLM)
BSERVER(VAP),
BUTIL,
BTRTOOLS
Requester (DOS & OS2)
1. Bserver (vap)
Note: Not a really a bug, but an improvement!
If a GET DIRECT operation returns a record which has a null value in
the key field specified by key number (and the key allows duplicates) then
status 82 is returned. This is a correct status code. Sometimes, however,
the user is not interested in positioning by any of the keys; he simply
wants to retrieve the record. To achieve this, a new option is provided
by this patch: the user can specify -1 in the key number and then
ONLY the data will be returned (and of course, no status 82 will be
reported).
2. Bserver (vap)
Files with variable size records can become corrupted (in the variable
pages) if the page size is at least 1024 and the user stores many
records with extremely short (1 to 2 byte) variable parts.
3. Bserver (vap)
Files can be left open on a server if another connected server crashes
and Netware SQL has opened these files previously from the crashed
server.
4. Bserver (vap)
If 2 workstations hold record locks on the same file and then they both
start a transaction and attempt to get a record from this file (i.e. try
to lock the file), then both stations will be locked up, without getting
a status 78 ("deadlock detected") on one of the stations.
5. Bserver (vap)
Any file access (get,step,etc.) can return an erroneous status 85
(was previously documented here as an 84- "File in use") in a "no-wait"
transaction (op code 219). It may also lock up in a regular transaction
(op code 19) if Station 1 was holding a record lock on the file BEFORE
it issued the BEGIN TRANSACTION and Station 2 had opened the file earlier
than Station 1.
6. Bserver (vap)
If the user passes Btrieve a file name in an illegal format (i.e. more
than an 8 character name or more than a 3 character extension) then
Btrieve stores it as it is given. Netware 286, however, drops the extra
letters and will open a file which matches the re-formatted name (e.g if
given: "abcdefghij.klmno" then file "abcdefgh.klm" is opened if it exists).
This can cause a status 94 for another open if that other open is not
getting the same, "miss-spelled" name. This patch will make sure that
Btrieve will always store internally the the re-formatted file name.
7. Bserver (vap)
When all workstations are shut down on an ArcNet network, the VAP
operating system returns an error to all VAPs using the Service
Advertising Protocol. This causes Bserver to issue an Error-Log message
of "Send Failure in Advertiser". This patch is normally commented-out,
but may be enabled by users who find their error logs clogged up.
8. Bserver (vap)
The following scenario produces an erroneous status 14:
a. first a workstation opens a file read-only;
b. the same file is opened again in regular mode once or more times
(either by another or by the same workstation);
c. using the "regular-mode" handle(s) do some operations which involve
the preimage file of the file (insert, update, delete, or transact)
d. close the file on all handles so that the "read-only" handle does
the LAST close;
e. open the file again in regular mode and try to do any operation
which uses the pre-image file.
9. Brequest
This patch makes BRequest aware of a new error code #74, which results
when an END_TRANS function is internally changed to an ABORT_TRANS due
to a previous error within the transaction. Without this patch,
Brequest will stop broadcasting the END_TRANS to all servers when this
error is encountered. This can result in the transaction left open on
another server.
10. Brequest
This patch fixes BRequest so that it can reset another workstation by
connection number without also resetting itself and terminating its own
connection.
11. Brequest
This patch fixes a BRequest SPX input queuing problem which can result
in lost packets and even BRequest lock-up when overloaded. This problem
is generally seen only if a very slow workstation is talking to a very
fast (and lightly loaded) BServer. It may also appear when BRequest is
running in a DesqView window with other processes (such as copying from
a hard disk to a floppy), since that effectively slows the W.S.
12. BUTIL.EXE
Increased stack size to 22K bytes. Btrieve utilities for COPY and
INDEX were crashing due to insufficient stack space to accommodate
local variables.
13. Brequest
This patch was made to satisfy a user request that BRequest should be able
to alternately attach, query, and detach to an indefinite number of
BServers. Currently, BRequest would have to be unloaded after the 8th
server is attached.
13/a Brequest
This patch is required in conjunction with patch #13 and ALSO fixes a
longstanding problem where a Begin_Transaction immediately after mapping
to a new server would fail to broadcast the transaction to that server.
14. Btrieve (NLM- NetWare 3.0; NetWare 3.1 patch #1)
An incompatibility with the rest of the Btrieve products:
The Get Position operation following a Delete operation returns
status 43 instead of status 8.
15. OS/2 Requester
15.a Returning status 22 on extended inserts
15.b Version returned was 5.0
16. OS/2 Requester
Opening a file on a different server than previously opened files
could have resulted in a status 12 despite correct filenames
and drive mappings.
17. OS/2 Requester
Random status 12 or 91 returned when opening a file.
This occurs if two file servers in the LAN have identical internet
addresses except for the last byte, and if the desired server is
found after the other in the bindery scanned for BSERVER VAP's.
18. OS/2 Requester
Protection violation generated by the COBOL interface due to the
requester not restoring the caller's SI and DI registers on return.
This could, but hasn't yet, be caused in other languages as well.
19. Btrieve (NLM- NetWare 3.0; Netware 3.1 patch #2)
Without this patch various random error status can be returned when using
variable length pages or using truncation.
20. Btrieve (DOS)
Btrieve will hang if a TSR or device driver is using it and that
TSR/device driver was called from DOS after the DOS-busy flag has
been set. This patch is normally "commented-out." It causes Btrieve
to ignore the DOS-busy flag, instead of waiting for it to clear
before Btrieve makes DOS calls. Only apply this patch if you are sure
that it is needed; that is, only if your application is calling
Btrieve while the DOS-busy flag is set AND you are sure that DOS is
not really busy!
24. Btrieve (DOS, NLM- Netware 3.0; Netware 3.1 patch #5)
Get Key-only operations are not updating the position block.
25. Btrieve (vap)
Logging to a different volume of the same server does not work properly.
27. Btrieve (VAP, NLM- Netware 3.1 patch #7)
& Brequest (DOS, os/2 )
For data-only files, Btrieve was returning data to the key buffer
after Get Direct, Update, Insert and Extended Insert.
*** THE PATCH MUST BE MADE BOTH TO THE VAP (OR NLM) AND THE REQUESTER ***
THE VAP (OR NLM) SENDS A FLAG TO THE REQUESTER- IF YOU DON'T PATCH
THE REQUESTER THE FLAG WILL NOT BE UNDERSTOOD AND THE PROBLEM WILL
STILL BE PRESENT.
28. Btrieve (DOS)
A file can become corrupted if a work station opens a file as another
workstation closes the same file from an accelerated processing mode
(timing-related bug, which is corrected by this patch).
30 Btrieve (vap, DOS)
Btrieve will return an erroneous status 26 when a supplemental
index with 8 segments is added to a data only btrieve file of
size 512 bytes.
31 Btrieve (DOS)
Btrieve will return an erroneous status 83's when it does Insert Extended
operations within a transaction.
33 Btrieve (vap, NLM- NetWare 3.1 patch #10)
This fixes the following bug: after a Get Direct returned a status 22
(user's data buffer too small), the user's key buffer was being
overwritten with garbage. It also fixes a bug in which the NLM
was not returning a key value after a Get Direct returned a status 22
when the user's data buffer WAS long enough to at least receive the
fixed length portion (including the keys) of the record.
*** THIS PATCH WILL ONLY WORK IF PATCH #27 HAS BEEN APPLIED TO THE ***
VAP OR NLM AND BREQUEST.EXE !!!
34 Btrieve (vap)
Fixes a bug which caused a GPI crash on the vap's server when the
application used the Extended Insert function and passed a data buffer
larger than the "Largest record size" parameter configured by Bsetup.
35 Btrieve (DOS)
Fixes a bug which caused btrieve to unnecessarily make a preimage
file if the very first operation requested after Btrieve was loaded
was a Create.
36 Btrieve (DOS)
Fixes a bug in which btrieve crashes (or perhaps shows other
unpredictable symptoms) when updating a record retrieved with a
get direct or step (no key) operation if there has been no insert
nor get (using a key) since the file was open, and if the file's
position block array contained values other than binary zeros prior
to the file's open operation.
(Fixes problem where update to dataonly file after StepFirst
hangs the workstation)
37 Btrieve (NLM- Netware 3.1 patch #11, DOS, and vap)
Fixes a bug which caused Btrieve to return an incorrect status 2
when a record was deleted from a file with a supplemental index.
This bug is most likely to occur only if few records have been inserted
since the creation of the supplemental index. The bug only occurs
on the VAP or DOS if the supplemental index was created with the NLM.
38 BTRTOOLS - (Windows Btrieve utilities)
This patch stops the description file utility from dropping the first
word of the comments from the description file.
39 Btrieve (OS/2)
Fixes a bug which would cause a segmentation violation during
re-initialization through BTRVINIT().
40 Btrieve ( vap )
Fixes an error in patch #34 for the vap. This error causes a status 39
to be returned when XQLI starts up.
41 Btrieve ( OS/2 & Windows )
Fixes a bug which caused btrieve to unnecessarily make a preimage
file if the very first operation requested after Btrieve was loaded
was a Create.
42 Btrieve ( OS/2 & Windows )
Fixes a bug in which btrieve crashes (or perhaps shows other
unpredictable symptoms) when updating a record retrieved with a
get direct or step (no key) operation if there has been no insert
nor get (using a key) since the file was open, and if the file's
position block array contained values other than binary zeros prior
to the file's open operation.
(Fixes problem where update to dataonly file after StepFirst
hangs the workstation)
43 Btrieve ( OS/2 & Windows )
Fixes a bug which caused Btrieve to return an incorrect status 2
when a record was deleted from a file with a supplemental index.
This bug is most likely to occur only if few records have been inserted
since the creation of the supplemental index. This bug will only
occur in Btrieve for Windows or OS/2 when using a file created by
the NLM Btrieve.
44 Btrieve ( DOS & OS/2 )
Fixes this bug: A file is opened in exclusive mode. The application
then repeats the following sequence a several times, each time using a
different record: it retrieves a record using a multiple record lock
bias (300 or 400), then it updates or deletes that record (which should
clear the lock). Eventually, a status 81 (Lock Error) is returned.
The number of times it can repeat the sequence before the status 81
is determined the user's specification of the maximum number of multiple
locks (/L:). For DOS Btrieve, this bug will also appear if the file is
opened in other modes, provided that the file is on a non-network drive
and SHARE.EXE is not loaded.
45 BTRTOOLS (Windows)
Fixes bug which required File Information key count to match total
key/segment count in description file. This was for the description
file edit utility.
46 Btrieve (DOS, see 158 for OS/2 and 165 for Windows)
Btrieve does not return status code 83 when a record is updated but
not read inside a transaction.
51 BUTIL.EXE
Clone is created incorrectly for a file which has at least one multi-
segmented supplemental key and one or more additional supplemental keys.
52 BROUTER (VAP)
This bug causes the server to GPI or ABEND if a Btrieve CREATE call
is made to a REMOTE server.
53 BROUTER (VAP)
If there are more than 100 file servers on the network(s), then BRouter
will sometimes crash when building its server tables.
54 BROUTER (VAP)
This patch fixes a BRouter SPX input queuing problem which can result
in lost packets. It also fixes lock-up problems caused by an over-
loaded on BRouter.
55 Btrieve (VAP, DOS, Windows, OS/2)
If VAP Btrieve has a file open, and DOS or Windows Btrieve (running on
a workstation) tries to open a file in the Normal, Verify, or Exclusive
modes, DOS/Windows/OS2 Btrieve incorrectly returned a status 94. This
patch makes it return the correct status, 85. Similarly, if Btrieve
running on a workstation has a file open and VAP Btrieve tries to
open it (any mode), VAP Btrieve was returning a 94. Now it'll return
an 85. Also, if a workstation Btrieve tries to open a file in
Accelerated mode in a directory in which the user does not have Netware
Write permission, an incorrect status of 85 was being returned. Now
it returns a 94.
56 Btrieve (VAP)
This bug allowed a user to open and write to files in directories
in which the user has no Write permission.
58 Btrieve (VAP)
This is not really a bug but it allows applications which "illegally"
change the key number when executing an update operation to operate
without getting a status 7. (Earlier versions did not catch the user
when changed the key number, so this fix makes 5.10 backward compatible
in this respect.)
62 Btrieve (!!!! Only for IBM PC LAN users !!!!)
Changes executed on a file within a transaction are erroneously rolled
back if another station accesses the file before an End Transaction (op19)
executed on the first station.
64 Btrieve ( DOS )
If the user attempts to install Btrieve with the /F:nn parameter to
specify that Btrieve allow more than 20 open files, and for any reason
the attempted installation fails (e.g., Btrieve already loaded), then
this bug could cause unpredictable symptoms, most likely hanging the
system.
65 Btrieve ( OS/2 )
Cntl-Break causes program to hang because OS/2 does not clear
the Btrieve semaphore owned by the process, nor does it let the process
finish the Btrieve operation before terminating. The ExitList routine
was waiting for the semaphore to clear. Cntl-C does not cause have
this problem.
67 Btrieve (vap)
This fixes a bug in an undocumented Btrieve function call which is
used by NetWare SQL in its "alter table" function. This bug was
introduced by patch #6.
68 BROUTER (VAP, NLM- NetWare 3.1 patch #22)
This fixes an interface problem between both BROUTERs and the Btrieve NLM
when doing an update operation on a key number other than 0. In some
cases this could result in over-writing the front of the record.
69 Btrieve ( DOS, Windows, OS/2 )
When the user attempts to use Btrieve's logging feature, and specifies
a log file on a different volume of the same server on which the
file-to-be-logged resides, logging does not happen. This patch fixes
the problem for DOS and Windows Btrieve. However, this problem is
not patchable for OS/2 Btrieve.
71 Btrieve ( DOS, Windows, OS/2, VAP, NLM- NetWare 3.1 patch #24 )
When an application does a Step Next or Step Previous (or Extended
Step Next/Previous) after a Delete, Btrieve should return a status
8, Invalid Positioning. Instead, this bug causes it to go into an
endless loop. With the VAP & NLM, the workstation will appear to be
hung, too. This patch fixes that bug. (The bug only appears if the
record deleted has a physical position > 0xffff.) Also fixed is a
related symptom of this bug: DOS, Windows and OS/2 Btrieve incorrectly
return a status 0 if you do a Get Position after a Delete.
73 Btrieve (DOS, Windows, OS/2)
Fixes a bug which shows up in the following scenario: an application has
two files open, and file #2 is opened in accelerated mode. It closes
file #1. It does some updates/inserts to file #2. It closes file #1
again (an error which returns a status 3). Many of the recent changes
to file #2 will be lost.
74 Btrieve (DOS, Windows, OS/2)
When using the Btrieve logging feature, the Reset operation was not
being logged and the log files were being left opened after a Reset.
76 Btrieve (DOS)
This corrects severe performance degradation on simple reads during
inserts by another WS with a transaction on the file. This was caused by
waiting in a loop for a lock instead of simply verifying a not-locked
state and returning.
77 Btrieve (DOS)
Btrieve 5.10 uses a new mechanism in order to keep more than 20 files
open to DOS at a time instead of rotating the 20 available handles.
This can cause Btrieve to compete with the application for available DOS
or NetWare handles where it did not previously do so. One solution is
to set the NetWare shell configuration to allow more than the default 40
handles. A low-performance solution is to use this patch to disable the
new mechanism and keep the 20 handle rotation limit. This allows 5.10 to
substitute for 5.00 without any environment changes, but at a cost.
78 Btrieve (DOS, Windows, OS/2, VAP) and BROLLFWD.
If the computer on which DOS, Windows, or OS/2 Btrieve is running is
turned off or rebooted during a transaction, Btrieve's implicit Abort
Transaction, which is performed when the files involved are next opened,
was not being properly logged. Also, with BSERVER.VAP, there was a small
timing window in which, if the server is turned off during an update,
delete, or insert, the VAP may improperly log an operation when the
involved files are reopened. In each of these cases, the improper logging
would confuse BROLLFWD. (Note: BROLLFWD is not being patched. You
must use version 5.15 of BROLLFWD to fix this bug.)
79 Btrieve (DOS)
RECALLED AND RE-RELEASED AS PATCH #116!!
If an End Transaction operation is interrupted (by a reboot, or power
down), Btrieve may not be able to use the transaction file. DOS Btrieve
displays "Unable to access btrieve file for transaction recovery" and
will not load. Windows and OS/2 Btrieve return a status 1002. This
patch is for DOS Btrieve only. Windows and OS/2 Btrieve will be fixed
in the next release.
81 Btrieve (DOS,Windows,OS/2)
The user's Filter_Reject_Count on GET_EXTENDED operations was limited
to 128 records, regardless of the length passed in, resulting in error
#60 when records should have been returned. This removes that limit.
82 Btrieve (OS/2)
Multiple sessions accessing the same transaction control file caused the
sessions to become hung up.
83 Btrieve (DOS, Windows, OS/2, VAP)
When creating a supplemental index using a null key and an extended
key type, if the null value is an even number, Btrieve will not
recognize the extended key type but will instead use the 3rd bit of the
key flags word to flag the key as either binary or string.
84 Btrieve ( DOS )
Status 93s were sometimes returned when doing multiple locks on many
files. The error could not be cleared by a RESET; it could only be
cleared by reloading btrieve. This was caused when a failure to open
the transaction file, because of NO_DOS_HANDLES, caused the system to
"rotate" handles by closing an old one. A bug in the rotation code
caused a file with a lock to be closed without clearing the lock record.
This record then resulted in a false state in later operations, leading
to the status 93. This problem can also be solved by increasing the
/F parameter, since this occurs only when operating at the file limit.
85 Btrieve ( DOS )
When doing an END TRANSACTION with logging on, the workstation would
sometimes hang in a loop waiting for the log file lock to clear when
the workstation itself was responsible for that lock. This fix clears
all locks at END TRANS time.
90 BTRIEVE (OS/2,WINDOWS)
The SET_DIR operation was not restoring the DS register before setting
the status code if the operation failed. The status code was set
using the DS register of the KEY BUFFER.
91 VAP Btrieve: BSERVER.VAP, version 5.10
With multiple workstations involved in transactions, a client could
receive erratic and non-repeatable status 2s on operations ranging from
OPENs to GETs on a file already opened. The root cause is that one
client has opened the file to his TTS task and the file has subsequently
been closed for rotation due to limited handles. The problem is that
the file must be re-opened on the next access, but only the owner task
can do so. All others get errors that translate to 2. The problem
disappears as soon as the first client accesses or ends his transaction.
This bug is therefore timing-related and very hard to pin down. This
fix allows other clients to temporarily assume the right task #.
92. VAP Btrieve: BSERVER.VAP, version 5.10
After an Extended Insert, the data buffer should be passed back with
a count of records successfully inserted in the first word of the
buffer. However, this bug prevented the data buffer from being sent
to the application if the Extended Insert returned a non-zero status.
93. Btrieve (DOS, Windows, OS/2, VAP)
The STAT command would return 0 for unused pages whenever the number was
greater than 32K (32768). This forces a non-zero return.
95. Btrieve (DOS, Windows, and OS/2)
When building a supplemental index (Op 31) on a file opened in
accelerated mode, if a duplicate key value is found and duplicates are
not allowed for the index being built, btrieve enters an infinite loop.
96. Btrieve (DOS, Windows, and OS/2)
If a file server is POWERED DOWN after a Btrieve insert operation,
the data file may sometimes be truncated, returning status 4 or other
errors when the server is restarted. This is due to a failure to commit
the expansion due to additional pages. This patch issues a DISK RESET
at the end of each operation to force an update of the directory.
97. Btrieve (DOS, Windows, and OS/2)
If Btrieve was not able to close a file during a Reset operation,
instead of returning a Status 2, Btrieve would act unpredictably,
most likely hanging or crashing the work station. (In the OS/2
environment, a protection violation will probably be detected.)
This bug was introduced by patch #74.
98. Btrieve (DOS)
This patch has been re-released as patch #124.
99. Btrieve (DOS)
This patch is the opposite of patch #77 so they should not be used
together. This patch causes the allocation of TWICE as many DOS file
handles as was specified by the "/F" parameter. In other words, a 2:1
ratio rather than the customary 1:1. This allows both the data and
preimage files to remain open for all AFL entries in order to avoid the
cost of closing files for handle rotation. Since each DOS handle entry
takes only one additional byte, the memory cost is minimal.
100. Btrieve (OS/2)
When a connection to a file server is lost and a RESET or ABORT
is done the operation would fail on the file handles for the lost
server. This patch causes Btrieve to continue with the operation
and ignore any failures. This patch also guarantees a zero return
code on a RESET operation. This should be done for all client versions,
but only done here for OS/2 and is source fixed for next versions.
101. Btrieve (OS/2)
When a connection to a file server is lost, lock operations on the
file return a LOCK VIOLATION status rather than an invalid handle.
This incorrect status is returned by the NetWare requester. The result
is that Btrieve keeps retrying the lock assuming that the status means
someone else has it locked. To get around the problem, a LSEEK to EOF
is done to verify the handle.
103. Btrieve (OS/2)
If errors occur during a CLOSE, continue processing to clean out AFL
and close the handle to clear the system handle table.
104. Btrieve (Windows)
Removes "Beta Version" from header description seen using EXEHDR.
Also changes incorrect version number in description from 5.11 to
5.10.
105. Btrieve (Windows,OS/2)
Comparasion of segment limit and length of structure for parameter
checking was incorrect.
106. Btrieve (OS/2)
Due to yet another incorrect status from an OPEN of the TRN file, Btrieve
was placed in a loop retrying the open to a server whose connection was
lost due to power down or other means. This occurred on END_TRAN.
Fixed by retrying open only on status codes 5 (INVALID_ACCESS) and
32 (SHARING_VIOLATION).
107. Btrieve (DOS, Windows, OS/2)
A stat 80 was returned on an update, with only 1 workstation accessing
the file. It only happened after a successful insert that had expanded
the file size by allocating a new page to it.
108. NLM Btrieve: BTRIEVE.NLM, version 5.15
When a VERY large preimage file is produced, as in a large transaction,
a value greater than 32k is mistakenly treated as signed and is
sign-extended with FFs. This is later interpreted as a VERY large
unsigned value when passed to the operating system, causing a GPI.
This patch makes the conversion WITHOUT sign-extension.
109. Btrieve (OS/2)
Garbage status being returned during transaction recovery. All error
status codes should be ignored anyway, so the status is now ignored.
110. This is a fix for patch #84. A typo resulted in 58 where 5B should be.
111. Btrieve (DOS, Windows,VAP and see 134 for os2)
During insertation and update, unnecessary key pages are recorded in
.PRE file.
112. Btrieve (DOS, Windows, VAP and see 133 for os2)
* Patch 112 for Windows, OS/2, VAP will be released at a later date.
If the file opened in accelerated mode returns status 5 during an
update the file might become corrupted without any spectacular
symptom of the corruption. (In the reported case a key was lost
from the Btree.)
113. Btrieve (DOS, Windows,VAP and see 135 for os2)
The following bugs have been fixed regarding to GET_DIRECT operation:
- GET_DIRECT after deletion of the record by another application gives
status 2.
- GET_NEXT after GET_DIRECT returns status 9, if the file contains
records with duplicate values.
- Sometimes the returned status code by GET_DIRECT following a
DELETE operation are different.
- In certain cases after deletion of the last record GET_DIRECT
does not report an error status on the just deleted record.
114. Btrieve (DOS, Windows)
When doing an END TRANSACTION with logging on, an already opened
Btrieve file would sometimes open again and it even remains open after
the application's finishing.
115. Btrieve (DOS, Windows, and OS/2)
If Btrieve is configured with no compression buffer, or with a
compression buffer that is too small ( /u parameter ), the Step
operations incorrectly return a status 54 (Variable Page Error)
instead of the correct status, 58. This patch fixes the problem.
116. Btrieve (DOS)
This is a fix for the case where
(a) patch #79 has been applied
(b) Btrieve operates on a NetWare Lite network and
(c) the .TRN file is redirected over the network (and is used by
another instance of Btrieve ??).
Given all of this, a simple series of operations will either fail or hang
the machine (depending on NWLite's version#). (Note: this is a slightly
rewritten patch 79, so whatever it has fixed, this 'new' patch will
fix too.)
Grow Patch Btrieve DOS
This patch does not fix any bug, but instead allocates a new patch
area, to be used by subsequent patches. It will increase the size
of BTRIEVE.EXE, WBTRCALL.DLL and BTRCALLS.DLL by 512 bytes, and
cause Btrieve to use an additional 512 bytes of RAM.
117. Btrieve (DOS)
Actually this bug is caused by patch #112. This patch fixes the problem
with the patch #112. Both of these patches should be used to eliminate
the original bug mentioned at patch #112.
118. Btrieve (DOS, and see 132 for OS/2 and Windows)
This patch enables Btrieve to understand Shift-JIS DBCS characters in
file specifications, so that our Japanese customers can use Kanji
characters in their Btrieve filenames. The patch follows the Shift-JIS
standard, namely that code points in the ranges 0x81-0x9F and
0xE0-0xFC are the 1st byte of a double-byte character and that the
second byte of a double-byte character is never less than 0x40.
Do not apply this patch unless you are running in a DBCS (Shift-JIS)
environment. (This patch uses the new patch area.)
119. Btrieve (DOS, and see 137 for OS/2 and Windows)
If you set up an extended step/get operation (op.36/37/38/39) to only
return record positions (NumOfFields = 0) and not any of the record
data and you specify the data buffer just as long as required
by Btrieve you will get a status 22.
This patch fixes the problem and returns the record positions.
120. Btrieve (DOS, see 131 for OS/2 and Windows)
The usage count does not need to be read for files opened in exlusive
mode. This eliminates a disk read for each operation. There are no bad
effects from reading the count, but is simply a wasted effort.
(Only released for DOS and OS/2, so far).
121. Btrieve (DOS, and see 140 for OS/2 and Windows)
For extended files: if the machine reboots in the middle of
a transaction, a subsequent open wouldn't be able to open the
file (returning stat.14 - preimage open error)
122. Btrieve (DOS, and see 136 for OS/2 and Windows)
If multiple operations coming from two or more workstations at the same
time, that change the file are executed on a file located on a network
drive and the log feature is active for that file, only the activity
of one workstation is logged.
In addition if a system crash happened on the server during the change
the directory entry of the log file might not be set on the disk
according to the change. It depends on the version of the NetWare Shell.
This patch can correct both of the problems. The solution for the second
problem is conditional. It should not be applied if the version of the
NetWare Shell is ver 3.2 or greater.
(This patch uses the new patch area.)
123. Btrieve (DOS, and see 143 for OS/2 and Windows)
This bug pertains only to Zstring and Lstring keys which are flagged
with the NULL or MANUAL attribute. If an application updates a
record and changes the key from NULL to non-NULL (or vice versa) by
changing bytes beyond the end of the Zstring/Lstring from the null
character to any other character (or vice versa), the index is not
updated to reflect the change in the key.
124. Btrieve (DOS and see 146 for OS/2 and Windows)
This is a re-release of what used to be patch 98. It is being re-
released because 1) it should not be optional; 2) it incorrectly
expected 'CU' in the header signature, whereas Btrieve NLM expects
'UC'; 3) it is now available on the OS/2 and Windows platforms (as
well as on the version 5.15 VAP -- see BUGS.515), whereas the original
patch 98 was only for DOS. The original description of the patch:
This patch implements an enhancement to the GET_EXTENDED API to
allow it to use the current record as the starting point, rather than
the next record. The header signature "UC" must be used instead of the
normal extended get signature, "EG".
125. Btrieve (DOS, see 164 for Windows, and see 156 for OS/2)
When a file having been opened in accelerated mode is touched within a
transaction (e.g. by a Get Equal) and right after this operation the
transaction is closed, an update on the record you got in the
transaction returns a status 80 (Conflict) though only one
workstation with one position block is active. Having applied this
patch the update finishes successfully as it was expected.
126. Btrieve (DOS, see 148 for OS/2 and Windows)
Fixes the following: if an application has more than one position
block for the same file (i.e., it called Btrieve's OPEN function
for a file it already had opened), when it closes the file, the
preimage file might not be deleted, depending on which position
block is closed first.
127. Same as patch #2 for Bserver vap, but this is for DOS)
Files with variable size records can become corrupted (in the variable
pages) if the page size is at least 1024 and the user stores many
records with extremely short (1 to 2 byte) variable parts.
128. Btrieve (DOS, and see 150 for OS/2 and Windows)
If you have a file with key and both the duplicates and null keys are
allowed, a GET DIRECT (op.23) on a record with null key could give
different status codes (st.82 or st.44) depending on whether the key is
a permanent or a supplemental key. This patch ensures that always the
proper status code (44) will be returned on a GET DIRECT like that.
129. Btrieve (DOS, and see 151 for OS/2 and Windows)
With multiple processes accessing the same file, there is a potential
for the key pages to be invalid as far as the parent stack is concerned.
If the next key is not found on the parent page, it should reestablish
the parent stack and start from the beginning.
130. Btrieve (DOS, see 160 for Windows, and see 138 for OS/2)
If the machine is turned off or rebooted between the time a Btrieve
file has marked as having a pre-image file and the time the pre-image
file is created, the file cannot be opened. Btrieve returns status 14.
This patch fixes the problem caused by a timing window, and it ensures
that the file can be opened.
131. Btrieve OS/2 and Windows(see 120 for dos)
The usage count does not need to be read for files opened in exlusive
mode. This eliminates a disk read for each operation. There are no bad
effects from reading the count, but is simply a wasted effort.
Grow Patch Btrieve OS2 and Windows
This patch does not fix any bug, but instead allocates a new patch
area, to be used by subsequent patches. It will increase the size
of BTRIEVE.EXE, WBTRCALL.DLL and BTRCALLS.DLL by 512 bytes, and
cause Btrieve to use an additional 512 bytes of RAM.
132. Btrieve OS/2 and Windows (see 118 for dos)
This patch enables Btrieve to understand Shift-JIS DBCS characters in
file specifications, so that our Japanese customers can use Kanji
characters in their Btrieve filenames. The patch follows the Shift-JIS
standard, namely that code points in the ranges 0x81-0x9F and
0xE0-0xFC are the 1st byte of a double-byte character and that the
second byte of a double-byte character is never less than 0x40.
Do not apply this patch unless you are running in a DBCS (Shift-JIS)
environment.
(This patch uses the new patch area.)
133. Btrieve OS/2 (see 112 for dos)
If the file opened in accelerated mode returns status 5 during an
update the file might become corrupted without any spectacular
symptom of the corruption. (In the reported case a key was lost
from the Btree.)
134. Btrieve OS2 (see 111 for dos)
During insertation and update, unnecessary key pages are recorded in
.PRE file.
135. Btrieve OS2 (see 113 for dos)
The following bugs have been fixed regarding to GET_DIRECT operation:
- GET_DIRECT after deletion of the record by another application gives
status 2.
- GET_NEXT after GET_DIRECT returns status 9, if the file contains
records with duplicate values.
- Sometimes the returned status code by GET_DIRECT following a
DELETE operation are different.
- In certain cases after deletion of the last record GET_DIRECT
does not report an error status on the just deleted record.
136. Btrieve OS/2 and Windows (see 122 for dos)
If multiple operations coming from two or more workstations at the same
time, that change the file are executed on a file located on a network
drive and the log feature is active for that file, only the activity
of one workstation is logged.
In addition if a system crash happened on the server during the change
the directory entry of the log file might not be set on the disk
according to the change. It depends on the version of the NetWare Shell.
This patch can correct both of the problems. The solution for the second
problem is conditional. It should not be applied if the version of the
NetWare Shell is ver 3.2 or greater.
(This patch uses the new patch area.)
137. Btrieve OS/2 and Windows (see 119 for dos)
If you set up an extended step/get operation (op.36/37/38/39) to only
return record positions (NumOfFields = 0) and not any of the record
data and you specify the data buffer just as long as required
by Btrieve you will get a status 22.
This patch fixes the problem and returns the record positions.
138. Btrieve OS/2 (see 130 for dos and 160 for Windows)
If the machine is turned off or rebooted between the time a Btrieve
file has marked as having a pre-image file and the time the pre-image
file is created, the file cannot be opened. Btrieve returns status 14.
This patch fixes the problem caused by a timing window, and it ensures
that the file can be opened.
139. Btrieve (OS/2)
If the user has the Lazy Writer on by the folling in CONFIG.SYS
RUN=C:\OS2\CACHE.EXE /LAZY:ON
files may be corrupted and data lost if the machine is rebooted or
turned off while the application is still active. The patch turns on
the WRITE-THRU flag on all files opend by Btrieve to bypass the
Lazy Writer caching.
140. Btrieve OS/2 and Windows(see 121 for dos)
(also in the 5.15 vap, see other bug file)
For extended files: if the machine reboots in the middle of
a transaction, a subsequent open wouldn't be able to open the
file (returning stat.14 - preimage open error)
141. Btrieve (OS/2, Windows, DOS)
A pre-image file never decreases in size. Only when the file is finally
closed and the pre-image file deleted is the disk space freed. A large
transaction can create huge pre-image files which will stay that way until
the file is deleted. This patch truncates the pre-image file to a maximum
of the same number of pages in the Btrieve file at End Transaction.
(Only released for OS/2 so far)
142. Btrieve OS/2 and Windows (see 117 for dos)
Actually this bug is caused by patch #133. This patch fixes the problem
with the patch #133. Both of these patches should be used to eliminate
the original bug mentioned at patch #133.
143. Btrieve OS/2 and Windows (see 123 for dos)
This bug pertains only to Zstring and Lstring keys which are flagged
with the NULL or MANUAL attribute. If an application updates a
record and changes the key from NULL to non-NULL (or vice versa) by
changing bytes beyond the end of the Zstring/Lstring from the null
character to any other character (or vice versa), the index is not
updated to reflect the change in the key.
144. Btrieve (OS/2, Windows)
Btrieve was looking beyond the end of the data buffer when searching
for non-repeating chars during record compression. If the user
allocted a specific size for the buffer which matched the data length,
we would attempt to read beyond the segment limit resulting in a
protection violation.
145. Btrieve (OS/2, Windows)
Btrieve would incorrectly write into the user's data buffer's segment,
often causing a protection violation, when a status 62 (Invalid
Descriptor) was returned from an Extended Get/Step. This bug also
existed in DOS Btrieve, but is fixed by the next patch.
146. Btrieve OS/2 and Windows (see 124 for dos)
This is a re-release of what used to be patch 98. It is being re-
released because 1) it should not be optional; 2) it incorrectly
expected 'CU' in the header signature, whereas Btrieve NLM expects
'UC'; 3) it is now available on the OS/2 and Windows platforms (as
well as on the version 5.15 VAP -- see BUGS.515), whereas the original
patch 98 was only for DOS. The original description of the patch:
This patch implements an enhancement to the GET_EXTENDED API to
allow it to use the current record as the starting point, rather than
the next record. The header signature "UC" must be used instead of the
normal extended get signature, "EG".
147. Btrieve (Windows, OS/2)
A hyphen in the transaction control file specification cause Btrieve
initialization to fail.
148. Btrieve OS/2 and Windows (see 126 for dos)
Fixes the following: if an application has more than one position
block for the same file (i.e., it called Btrieve's OPEN function
for a file it already had opened), when it closes the file, the
preimage file might not be deleted, depending on which position
block is closed first.
149. Btrieve (DOS, Windows, OS/2)
An enhancement: this patch lets applications define case-insensitive
keys by setting the 0x0400 bit in the key flags word for a Create or
Create Supplemental Index call. But be forewarned: unpatched, older
Btrieves may misinterpret and even corrupt these case-insensitive keys.
150. Btrieve OS/2 and Windows (see 128 for dos)
If you have a file with key and both the duplicates and null keys are
allowed, a GET DIRECT (op.23) on a record with null key could give
different status codes (st.82 or st.44) depending on whether the key is
a permanent or a supplemental key. This patch ensures that always the
proper status code (44) will be returned on a GET DIRECT like that.
151. Btrieve OS/2 and Windows (see 129 for dos)
With multiple processes accessing the same file, there is a potential
for the key pages to be invalid as far as the parent stack is concerned.
If the next key is not found on the parent page, it should reestablish
the parent stack and start from the beginning.
152. Btrieve (OS/2)
Actually a correction to patch 96. The incorrect patch causes status 87
to be returned after a large number of operations which expand the file.
153. Btrieve (OS/2, see 161 for Windows)
Patch to fix patch 105.
154. Btrieve (DOS & OS\2, see 162 for Windows)
If the workstation reboots while Btrieve is working on an End Trans
(op. 20) and a couple of files were involved in that transaction, it is
possible that the transaction has been finished for a few file while
others still remain in inconsistant states. The result is that a few
file shows the changes while others does not (after the automatic
recovery). Normally, Btrieve's 'transaction recovery' feature solves the
problem by marking the files having been changed in a transaction as
incomplete files at the time when Btrieve is loaded again.
In the reported case this feature did not work. This patch ensures
the perfect and correct solution of the described problem.
155. Btrieve (OS/2, See 169 for DOS and Windows)
Doing a Get Next (op.6) / Previous (op.7) with key bias (+50) or a
Get LT (op.10) on a key-only file with duplicates Btrieve either did
not return the expected key or got stuck in an infinite loop.
The key bias (+50) was ignored on a key-only file namely both the
databuffer and the keybuffer were updated.
This patch ensures in one hand the correct positioning on the other
hand that the databuffer does not get updated when the key bias was
applied.
(Only released for OS/2 so far)
156. Btrieve OS/2 (see 125 for dos and 164 for Windows)
When a file having been opened in accelerated mode is touched within a
transaction (e.g. by a Get Equal) and right after this operation the
transaction is closed, an update on the record you got in the
transaction returns a status 80 (Conflict) though only one
workstation with one position block is active. Having applied this
patch the update finishes successfully as it was expected.
157. Btrieve (OS/2, see 166 for Windows)
Patch to fix patch 144.
158. Btrieve (OS/2, see 165 for Windows)
Same as patch #46 for DOS.
159. Btrieve (OS/2)
Actually a logical problem between patches #73 and #103
160. Btrieve Windows (see 130 for dos and 138 for OS\2)
If the machine is turned off or rebooted between the time a Btrieve
file has marked as having a pre-image file and the time the pre-image
file is created, the file cannot be opened. Btrieve returns status 14.
This patch fixes the problem caused by a timing window, and it ensures
that the file can be opened.
161. Btrieve (Windows, see 153 for OS\2)
Patch to fix patch 105.
162. Btrieve (Windows, see 154 for OS\2)
If the workstation reboots while Btrieve is working on an End Trans
(op. 20) and a couple of files were involved in that transaction, it is
possible that the transaction has been finished for a few file while
others still remain in inconsistant states. The result is that a few
file shows the changes while others does not (after the automatic
recovery). Normally, Btrieve's 'transaction recovery' feature solves the
problem by marking the files having been changed in a transaction as
incomplete files at the time when Btrieve is loaded again.
In the reported case this feature did not work. This patch ensures
the perfect and correct solution of the described problem.
(DOS patch pending)
163. Btrieve (Windows, see 103 for OS\2)
If errors occur during a CLOSE, continue processing to clean out AFL
and close the handle to clear the system handle table.
164. Btrieve Windows (see 125 for dos and 156 for OS\2)
When a file having been opened in accelerated mode is touched within a
transaction (e.g. by a Get Equal) and right after this operation the
transaction is closed, an update on the record you got in the
transaction returns a status 80 (Conflict) though only one
workstation with one position block is active. Having applied this
patch the update finishes successfully as it was expected.
165. Btrieve (Windows, see 158 for OS\2)
Same as patch #46 for DOS.
166. Btrieve (Windows, see 157 for OS/2)
Patch to fix patch 144.
167. Btrieve (Windows, see 172 for DOS)
Fixes the following: when a file is created with the pre-allocation
flag set and the file's page size multiplied by the number of pages
to pre-allocate is an even multiple of 65536, an additional 65536
bytes are pre-allocated to the file.
(Only released for DOS and Windows so far.)
168. Btrieve (DOS)
When Btrieve is used WITHOUT the /e (no expanded memory) option with new
memory managers (QEMM386 6.0, etc) and other TSRs such as NETX, it can
sometimes hang at load time. This is because Btrieve starts with a
small initial DOS stack and then changes over to its main stack. If
deep interrupts occur or calls are made to the EMS system during this
load time, the stack limit can be exceeded and an exception interrupt
can occur which will abend QEMM386. This fix increases the stack size.
169. Btrieve (DOS, see 155 for OS/2)
See patch #155's description.
(Pending: WIN patch).
170. Btrieve (DOS)
Fixes a bug where one user, waiting for a lock to be released by
another user and receiving 84's, would suddenly get a status 85 and
would then get the record invalidly on the next operation. This was
caused by failing to test for the former condition in one specific
branch of the locking code.
(Pending: WIN & OS2 patches).
171. Btrieve (DOS)
Fixes a bug where a status 84 could be received on UNLOCK when using
multiple record locks. This was caused by the increment of the wrong
pointer within the unlock loop.
(Pending: WIN & OS2 patches).
172. Btrieve (DOS, see 167 for Windows)
See patch #167's description.
(Pending: OS2 patch).
173. Btrieve (DOS)
Fixes the following bug: Given a Btrieve file which already shows
a certain pattern of corruption (specifically, the file's key
descriptors contain unreasonably large values for the key's offset
and length), Btrieve will try to return a status 19, Unrecoverable
Error, into the callers STATUS variable. But because Btrieve fails
to apply a segment override, it incorrectly writes the 19 to the
wrong address. Thus a status 0 is returned incorrectly. In
protected mode environments, this stray write will likely cause
a segmentation violation.
(Pending: WIN & OS2 patches).
174. Btrieve (DOS)
Fixes the following problem: when two or more workstations are
updating a Btrieve file concurrently, and at least one workstation
is using Btrieve transactions, and Btrieve is configured to log
activity on that file, the log file may become corrupt.
(Pending: WIN & OS2 patches).
175. Btrieve (DOS)
When you open a file in exclusive mode and do an insert operation
that expands the file by adding one or more new pages to the file AND
right after the insert the Operating System, whose File System manages
the disk I/Os, crashes, the data file can be truncated which means a
data loss.
This patch fixes the problem by forcing an update of the directory.
The way it is done is vary depending on the Operating System (e.g.
DOS version number, NetWare Shell version number) so please apply the
patch according to the comment (if any) you can find in the patch file.
(Pending: WIN & OS2 patches).
176. Btrieve (DOS)
Some customers have reported garbage being written beginning at
offset 400H in their files' FCR page. That part of the FCR is
unused anyway, but some customers have reported that eventually
such files will experience corruption of their index definitions.
This patch fixes the problem by ensuring that Btrieve does not
put the garbage into the FCR.
(Pending: WIN & OS2 patches).
177. Btrieve (DOS)
Fixes a bug which caused a status 58 (compress buffer too small)
to be incorrectly returned intermittently on Updates and
Deletes, when these operations follow an Insert, Update, or any
read operation on another file which uses blank-truncated
records.
(Pending: WIN & OS2 patches).
178. Btrieve (DOS)
When you try to insert a record into a file with a descending,
autoincrement key that already has some records in it, you can get
an erroneous status 5 (Duplicate key value).
This patch ensures that a record with binary zeros in the field of
the autoincrement key can be inserted even if the key is defined as a
descending key.
(Pending: WIN & OS2 patches).